module.exports = function (grunt) {
  // 1. 配置任务
  grunt.initConfig({
    pkg: grunt.file.readJSON("package.json"),
    clean: ["lib"],
    concat: {
      options: {
        separator: ";",
      },
      dist: {
        src: ["src/app1.js", "src/app2.js"],
        dest: "lib/bundle.js",
      },
    },
    babel: {
      options: {
        sourceMap: false,
        presets: ["@babel/preset-env"],
      },
      dist: {
        files: {
          "lib/bundle.js": "lib/bundle.js",
        },
      },
    },
    uglify: {
      options: {
        banner:
          '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
      },
      my_target: {
        files: {
          "lib/bundle.min.js": ["lib/bundle.js"],
        },
      },
    },
    less: {
      build: {
        files: {
          "lib/main.css": "src/assets/index.less",
        },
      },
      dev: {
        files: {
          "lib/main.css": "src/assets/theme.less",
        },
      },
    },
    cssmin: {
      options: {
        mergeIntoShorthands: false,
        roundingPrecision: -1,
      },
      target: {
        files: {
          "lib/main.min.css": ["lib/main.css"],
        },
      },
    },
  });
  // 2.加载插件任务。加载包含 "uglify" 任务的插件。
  grunt.loadNpmTasks("grunt-contrib-clean"); //合并
  grunt.loadNpmTasks("grunt-contrib-concat"); //合并
  grunt.loadNpmTasks("grunt-contrib-uglify"); //压缩
  grunt.loadNpmTasks("grunt-contrib-less"); //压缩
  grunt.loadNpmTasks("grunt-contrib-cssmin"); //压缩
  grunt.loadNpmTasks("grunt-babel");
  // 3.注册构建任务。默认被执行的任务列表。执行的任务是同步的（按顺序执行）
  grunt.registerTask("css", ["clean", "less:build", "cssmin"]);
  grunt.registerTask("js", ["clean", "concat", "babel", "uglify"]);
  // 自定义任务
  grunt.task.registerTask("dist", "自定义任务", function (arg1, arg2) {
    const css = [...arguments].includes("css");
    const js = [...arguments].includes("js");
    if (css) {
      // grunt.task.run(["clean", "less:build", "cssmin"]);
      grunt.task.run("css");
    } else if (js) {
      grunt.task.run("js");
    } else {
      grunt.task.run([
        "clean",
        "concat",
        "babel",
        "uglify",
        "less:build",
        "cssmin",
      ]);
    }
  });
};
